package cc.cc4414.cc02.chat.service;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import cc.cc4414.cc02.chat.entity.Friend;

/**
 * @author cc 2018年9月7日
 */
public interface FriendService {
	/**
	 * 添加好友
	 * 
	 * @param userId
	 *            用户id
	 * @param friendId
	 *            好友id
	 */
	@Transactional
	void add(Long userId, Long friendId);

	/**
	 * 取消关注
	 * 
	 * @param userId
	 *            用户id
	 * @param friendId
	 *            好友id
	 */
	@Transactional
	void cancelAdd(Long userId, Long friendId);

	/**
	 * 同意添加对方为好友
	 * 
	 * @param userId
	 *            用户id
	 * @param friendId
	 *            好友id
	 */
	@Transactional
	void accept(Long userId, Long friendId);

	/**
	 * 删除好友
	 * 
	 * @param userId
	 *            用户id
	 * @param friendId
	 *            好友id
	 */
	@Transactional
	void delete(Long userId, Long friendId);

	/**
	 * 添加对方为黑名单
	 * 
	 * @param userId
	 *            用户id
	 * @param friendId
	 *            好友id
	 */
	@Transactional
	void addBlacklist(Long userId, Long friendId);

	/**
	 * 将对方移除黑名单
	 * 
	 * @param userId
	 *            用户id
	 * @param friendId
	 *            好友id
	 */
	@Transactional
	void removeBlacklist(Long userId, Long friendId);

	/**
	 * 查询所有自己的关注、好友及黑名单
	 * 
	 * @param userId
	 *            用户id
	 * @return 查询到的数据
	 */
	List<Friend> findFriends(Long userId);

	/**
	 * 查询所有想添加自己为好友的用户
	 * 
	 * @param userId
	 *            用户id
	 * @return 查询到的数据
	 */
	List<Friend> findAddMe(Long userId);
}
